package com.scm.biz.dao;

import java.util.List;
import java.util.Map;

import com.scm.biz.bean.SysUser;
import com.scm.biz.query.SysUserQuery;
import com.scm.biz.result.SysUserInfoResult;
import com.scm.biz.result.SysUserResult;

public interface SysUserDao {
    int deleteByPrimaryKey(Integer id);

    int insert(SysUser record);

    int insertSelective(SysUser record);

    SysUser selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysUser record);

    int updateByPrimaryKey(SysUser record);
    
    List<SysUser> selectListByRoleCode(String roleCode);
    List<SysUser> selectList();
    
    List<SysUserResult> selectPage(SysUserQuery sysUserQuery);
    
    SysUser selectByEmail(String email);
    int selectPageCount(SysUserQuery sysUserQuery);
    
    /**
     * 根据邮箱查询出当前登录用户的基本信息
     * @param email 要查询的email
     * @return
     */
    SysUserInfoResult selectUserById(String email);
    
    /**
     * 修改指定用户的密码
     * @param sysUser
     * @return
     */
    int updatePassword(SysUser sysUser);
    
    /**
     * 根据邮箱查询出对应的密码
     * @param email
     * @return
     */
    String selectPassword(String email);
    
    /**
     * 获取指定Id用户的角色名列表
     * @param id
     * @return
     */
    List<String> selectRoleName(Integer id);
    
    List<Integer> selectListByResourceCode(String code);
    
    /**
     * 查询指定用户下级员工的Id列表
     * @param id 用户Id
     * @return
     */
    List<Integer> selectSubordinate(Integer id);
    
    /**
     * 查询所有的项目经理
     * @return
     */
    List<SysUser> selectManager();
    
    /**
     * 查询所有的销售
     * @return
     */
    List<SysUser> selectSale();
    
    /**
     * 邮箱是否存在
     * @param map
     * @return
     */
    int haveEmail(Map<String,Object> map);
}